package poo.builder;

public class Persona {
	private String cognome, nome;
	private Genere genere;
	private int eta;
	private String domicilio, prefisso, telefono, email;
	
	public Persona( Builder b ){
		this.cognome=b.cognome;
		this.nome=b.nome;
		this.genere=b.genere;
		this.eta=b.eta;		
		this.domicilio=b.domicilio;
		this.prefisso=b.prefisso;	
		this.telefono=b.telefono;
		this.email=b.email;		
	}
	
	public static class Builder{
		String cognome="", nome="";
		Genere genere=Genere.FEMMINILE;
		int eta;
		String domicilio="", prefisso="0984", telefono="", email="";	
		//metodi di building
		public Builder getCognome( String cognome ){
			this.cognome=cognome;
			return this;
		}
		public Builder getNome( String nome ){
			this.nome=nome;
			return this;
		}
		public Builder getGenere( Genere genere ){
			this.genere=genere;
			return this;
		}		
		public Builder getEta( int eta ){
			this.eta=eta;
			return this;
		}		
		public Builder getDomicilio( String domicilio ){
			this.domicilio=domicilio;
			return this;
		}		
		public Builder getPrefisso( String prefisso ){
			this.prefisso=prefisso;
			return this;
		}		
		public Builder getTelefono( String telefono ){
			this.telefono=telefono;
			return this;
		}	
		public Builder getEmail( String email ){
			this.email=email;
			return this;
		}	
		public Persona build(){
			Persona p=new Persona( this );
			return p;
		}
	}//Builder
	
	//metodi accessori di Persona
	public String getCognome(){ return cognome; }
	public String getNome(){ return nome; }
	public Genere getGenere(){ return genere; }
	public int getEta(){ return eta; }
	public String getPrefisso(){ return prefisso; }
	public String getTelefono(){ return telefono; }
	public String getEmail(){ return email; }
	public String toString(){
		return getClass().getName()+" cognome="+cognome+
				" nome="+nome+" genere="+genere+" domicilio="+domicilio+
				" prefisso="+prefisso+" telefono="+telefono+" email="+email;
	}
	
	public static void main( String []args ){
		Persona p1=new Persona.Builder()
			.getCognome("Rossi")
			.getNome("Fabio")
			.getGenere( Genere.MASCHILE )
			.getTelefono("2345678")
			.getEmail("rossi.fabio@libero.it")
			.build();
		Persona p2=new Persona.Builder()
			.getCognome("Bianchi")
			.getNome("Risa")
			.getTelefono("3456789")
			.getEmail("bianchi.rosa@tiscali.it")
			.build();		
		System.out.println(p1);
		System.out.println(p2);
	}
	
}//Persona
